﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using InmobiliariaNegocio;

namespace InmobiliariaIntefaz
{
    public partial class frmConcretar : Form
    {
        private Inmobiliaria inmobiliaria;

        public frmConcretar(Inmobiliaria inmob)
        {
            InitializeComponent();

            inmobiliaria = inmob;
        }
        
        private void cargarClientes()
        {
            ddlClientes.DataSource = inmobiliaria.listarClientes();
        }

        private void frmConcretar_Load(object sender, EventArgs e)
        {
            cargarTipoOperacion();
            cargarClientes();
        }

        private void CargarGrilla(string tipo)
        {
            BindingSource source = new BindingSource();
            grvDisponiblesOp.AutoGenerateColumns = true;
            if (tipo.Equals("Alquiler"))
               source.DataSource = inmobiliaria.listarEnVentaOAlquiler("Alquiler", ddlClientes.SelectedItem);
            else if (tipo.Equals("Venta"))
                source.DataSource = inmobiliaria.listarEnVentaOAlquiler("Venta", ddlClientes.SelectedItem);
            grvDisponiblesOp.DataSource = source;
        }

        private void ddlDisponibles_SelectedIndexChanged(object sender, EventArgs e)
        {
            CargarGrilla(ddlTipoOp.Text);
        }

        private void cargarTipoOperacion()
        { 
            List < string > tipos;
            string tipo2 = "Seleccione Operacion...";
            string tipo = "Alquiler";
            string tipo1 = "Venta";
            tipos = new List<string>();
            tipos.Add(tipo2);
            tipos.Add(tipo);
            tipos.Add(tipo1);
            ddlTipoOp.DataSource = tipos;
        }

        private void grvDisponiblesOp_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                lblIndex.Text = e.RowIndex.ToString();
                if (grvDisponiblesOp.ColumnCount > 4)
                {
                    if (e.ColumnIndex == 0)
                        concretarTransaccion();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void concretarTransaccion()
        {
            ddlClientes.Enabled = false;
            ddlTipoOp.Enabled = false;
            btnAceptar.Visible = true;
            btnCancelar.Visible = true;
        }

        private void limpiarControles()
        {
            ddlClientes.Enabled = true;
            ddlTipoOp.Enabled = true;
            btnAceptar.Visible = false;
            btnCancelar.Visible = false;

        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            int numero = inmobiliaria.darContadorOperaciones();

            Inmueble inm = inmobiliaria.buscarInmueble(int.Parse(grvDisponiblesOp.Rows[int.Parse(lblIndex.Text)].Cells[1].Value.ToString()));

            if (ddlTipoOp.Text.Equals("Alquiler"))
            {
                Alquiler alquiler = new Alquiler(numero, DateTime.Now, inm.Monto, ((Cliente)ddlClientes.SelectedItem).Dni, inm.Numero);
                inmobiliaria.agregarAlquiler(alquiler);
                
                
                alquiler.modificarInmuebleAlqBD();
                inmobiliaria.modificarInmueble(inm.Numero, false, "Alquiler");
                inmobiliaria.eliminarReserva(inm.Numero);
                alquiler.guardarseBD();
            }
            
            if (ddlTipoOp.Text.Equals("Venta"))
            {
                Venta venta = new Venta(numero, DateTime.Now, inm.Monto, ((Cliente)ddlClientes.SelectedItem).Dni, inm.Numero);
                inmobiliaria.agregarVenta(venta);
                
               
                inmobiliaria.modificarInmueble(inm.Numero, false, "");
                inmobiliaria.eliminarReserva(inm.Numero);
                venta.guardarseBD();
            }

            limpiarControles();
            CargarGrilla(ddlTipoOp.Text);
        }

        private void ddlClientes_SelectedIndexChanged(object sender, EventArgs e)
        {
            CargarGrilla(ddlTipoOp.Text);
        }

        private void ddlTipoOp_KeyDown(object sender, KeyEventArgs e)
        {
            e.SuppressKeyPress = true;
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            limpiarControles();
        }

        private void ddlClientes_KeyDown(object sender, KeyEventArgs e)
        {
            e.SuppressKeyPress = true;
        }

        private void ddlClientes_SelectedIndexChanged_1(object sender, EventArgs e)
        {
            if ((ddlTipoOp.Text == "Alquiler") || (ddlTipoOp.Text == "Venta"))
                CargarGrilla(ddlTipoOp.Text);
            else
                ddlTipoOp.Focus();
        }

        private void grvDisponiblesOp_DataError(object sender, DataGridViewDataErrorEventArgs e)
        {
            this.Close();
        }

    }
}
